[SQL] DML (select, insert, update, delete)

  1. 데이터 관리(CRUD)
  2. Select
  3. Insert
  4. Update
  5. Delete

데이터 관리

  • CRUD 방식을 이용하여 데이터를 관리하게 된다
    • Create : 생성
    • Read : 읽기
    • Update : 수정
    • Delete : 삭제
  • 해당 데이터를 관리하기 위해 사용되는 SQL은 DML 이라고 불리며, 데이터를 관리하게 된다

DML 이란?

  • Data Manipulation Language : 데이터 조작 언어
  • DB의 데이터를 생성/ 조회 / 갱신 / 삭제 하는 언어를 의미함

SELECT

  • 데이터를 조회하는 역할
  • CRUD 중에 “Read”에 해당하는 부분
  • 왜 결과 순서가 예제 테이블과 다를 수 있는가: 관계형 모델에서 테이블(릴레이션)은 원래 순서가 없는 튜플의 집합이다. ORDER BY를 명시하지 않으면 DB가 내부적으로 편한 순서(저장 순서, 인덱스 스캔 순서 등)로 반환할 뿐, 특정 순서를 보장하지 않는다. 아래 INSERT/UPDATE/DELETE 예시의 결과 표도 실제로는 순서가 보장되지 않으며, 이해를 돕기 위한 예시일 뿐이다.

[문법]

Select [컬럼],[컬럼2]… from [테이블명];

참고) [컬럼]을 대신해서 ""으로 사용할경우, 모든 컬럼을 의미
ex) select * from member;

예시 테이블 member (id, money):

idmoney
11000
22000
31500

실행 결과: 위와 같이 member 테이블의 모든 컬럼과 행이 조회됨.

INSERT

  • 데이터 추가 (행 추가)
  • CRUD 중에 “Create”에 해당

[문법]

Insert Into [테이블명]( [필드이름1], [필드이름2], …) Values ( [데이터값1], [데이터값2],…)

*참고) 필드이름의 경우 생략될 수 있다 ( 순서대로 Values가 적용됨 )
insert into member values(1, 1000);

실행 결과 (member 테이블에 (id=1, money=1000) 행이 새로 추가됨):

idmoney
22000
31500
11000

UPDATE

  • 데이터 수정
  • CRUD 중에 “Update”에 해당

[문법]

Update [ 테이블명 ] set [열] = [변경할값] where [조건]

*참고) 조건이 없는 경우, 테이블에 있는 전체 열을 전부 수정

  • 왜 위험한가: WHERE 절은 “어떤 행에 적용할지”를 결정하는 필터다. 생략하면 테이블의 모든 행이 대상이 되므로, 운영 DB에서 WHERE 없이 UPDATE/DELETE를 실행하는 것은 대표적인 사고 원인 중 하나다 (먼저 같은 조건으로 SELECT를 돌려 영향받을 행을 확인하는 습관이 안전하다).

ex) update member set money = 5000 where id = 1;

실행 결과 (id가 1인 행의 money만 변경됨):

idmoney
15000
22000
31500

DELETE

  • 데이터 삭제
  • CRUD 중에 “Delete”에 해당

[문법]

delete from [테이블명] where [조건]

*참고) where 조건절이 없을 경우, 해당 테이블 모든 데이터 삭제

ex) delete from member where id = 1;

실행 결과 (id가 1인 행이 삭제되고 남은 데이터):

idmoney
22000
31500